Go
сложный
Avito.Кухня — тестовое задание Avito
Реальное тестовое задание на бэкенд-стажировку Avito: два Go-сервиса (kitchen-service — заказы, establishment-service — заведение), Postgres, Kafka, transactional outbox, идемпотентность на пяти разных уровнях. Полный разбор — уже готовая отдельная секция KB, здесь только точка входа и схема.
Полная архитектурная схема (archify) →
Где полный разбор
Весь детальный контент по этому проекту уже написан отдельным деревом — не дублирую здесь, а указываю прямо на него:
- «Защита тестового Avito на реальном проекте: Avito.Кухня» — архитектура, маппинг ошибок, in-memory vs Postgres, 100 RPS, выбор Kafka
- Блокировки и гонки на списании остатка, идемпотентность (5 разных механизмов), transactional outbox + DLQ, тестовая стратегия, каталог реальных найденных багов, реестр осознанных ограничений — всё в той же папке
avito/Тестовое задание/ - Дополнительные deep dive: Kafka consumer groups/ребалансировка/exactly-once, Postgres изоляция транзакций/блокировки — там же
Стек одной строкой
Go, Postgres (по БД на сервис), Kafka (3 топика: orders.new, orders.status_updated, orders.status_updated.dlq), transactional outbox + relay, SELECT ... FOR UPDATE + сравнение статуса для идемпотентности, атомарный UPDATE ... WHERE stock >= qty для списания остатка.
Как усвоено?
Сложность
Вода
ИИ-шность
Фичи движка
Подача